
$(document).ready(function() {
    cargarGeneros($("#inputGeneros"));
    cargarGeneros($("#inputActGeneros"));

    cargarPaises($("#inputPaises"), $("#inputCiudades"));
    cargarPaises($("#inputActPaises"), $("#inputActCiudades"));

    /* habilita y deshabilita el checkbox dependiendo de si esta o no 
     * seleccionado
     * */
    $("#modContrasenha").click(function(event) {
        controlCheckBox();
    });

    $(".cerrarVentanaEditar").click(function() {
        //hace que todos los campos del form se reseteen
        $("#actualizarForm")[0].reset();
        //hace que los mensajes e iconos de validación desaparezcan.
        $("#actualizarForm").data('bootstrapValidator').resetForm();

        controlCheckBox();
    });

    $('#agregarForm').bootstrapValidator({
        // To use feedback icons, ensure that you use Bootstrap v3.1.0 or later
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            nro_doc: {
                validators: {
                    notEmpty: {
                        message: 'El n&uacute;mero de documento no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 1,
                        max: 45,
                        message: 'El n&uacute;mero de documento debe tener como m&aacute;ximo 8 caracteres'
                    },
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            }, nombres: {
                validators: {
                    notEmpty: {
                        message: 'El nombre del usuario no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 1,
                        max: 45,
                        message: 'El nombre del usuario debe tener como m&aacute;ximo 45 caracteres'
                    }
                }
            },
            apellidos: {
                validators: {
                    notEmpty: {
                        message: 'El apellido no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 1,
                        max: 45,
                        message: 'El apellido debe tener como m&aacute;ximo 45 caracteres'
                    }
                }
            },
            fecha_inicio: {
                validators: {
                    notEmpty: {
                        message: 'La fecha inicial no puede estar vac&iacute;o'
                    }
                }
            },
            email: {
                validators: {
                    emailAddress: {
                        message: 'Email no v&aacute;lido'
                    }
                }
            },
            nro_telefono: {
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            },
            nro_celular: {
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            },
            peso: {
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            },
            contrasenha: {
                validators: {
                    notEmpty: {
                        message: 'La contrase&ntilde;a no puede estar vac&iacute;o'
                    },
                    different: {
                        field: 'usuarioAlias',
                        message: 'La contrase&ntilde;a no puede ser igual al alias'
                    },
                    stringLength: {
                        min: 4,
                        message: 'La contrase&ntilde;a no puede tener menos de 4 caracteres'
                    },
                    identical: {
                        field: 'confirmarContrasenha',
                        message: 'La contrase&ntilde;a y el confirmar deben ser iguales'
                    }
                }
            },
            confirmarContrasenha: {
                validators: {
                    notEmpty: {
                        message: 'La confirmaci&oacute;n no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 4,
                        message: 'La contrase&ntilde;a no puede tener menos de 4 caracteres'
                    },
                    identical: {
                        field: 'contrasenha',
                        message: 'La confirmaci&oacute;n y la contrase&ntilde;a deben ser iguales'
                    }
                }
            }
        }
    }).on('success.form.bv', function(e) {
        // Prevent form submission
        e.preventDefault();

        // Get the form instance
        var $form = $(e.target);

        // Get the BootstrapValidator instance
        var bv = $form.data('bootstrapValidator');

        agregar();

    });

    $('#actualizarForm').bootstrapValidator({
        // To use feedback icons, ensure that you use Bootstrap v3.1.0 or later
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            nro_doc: {
                validators: {
                    notEmpty: {
                        message: 'El n&uacute;mero de documento no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 1,
                        max: 45,
                        message: 'El n&uacute;mero de documento debe tener como m&aacute;ximo 8 caracteres'
                    },
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            }, nombres: {
                validators: {
                    notEmpty: {
                        message: 'El nombre del usuario no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 1,
                        max: 45,
                        message: 'El nombre del usuario debe tener como m&aacute;ximo 45 caracteres'
                    }
                }
            },
            apellidos: {
                validators: {
                    notEmpty: {
                        message: 'El apellido no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 1,
                        max: 45,
                        message: 'El apellido debe tener como m&aacute;ximo 45 caracteres'
                    }
                }
            },
            fecha_inicio: {
                validators: {
                    notEmpty: {
                        message: 'La fecha inicial no puede estar vac&iacute;o'
                    }
                }
            },
            email: {
                validators: {
                    emailAddress: {
                        message: 'Email no v&aacute;lido'
                    }
                }
            },
            nro_telefono: {
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            },
            nro_celular: {
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            },
            peso: {
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            },
            contrasenha: {
                validators: {
                    notEmpty: {
                        message: 'La contrase&ntilde;a no puede estar vac&iacute;o'
                    },
                    different: {
                        field: 'usuarioAlias',
                        message: 'La contrase&ntilde;a no puede ser igual al alias'
                    },
                    stringLength: {
                        min: 4,
                        message: 'La contrase&ntilde;a no puede tener menos de 4 caracteres'
                    },
                    identical: {
                        field: 'confirmarContrasenha',
                        message: 'La contrase&ntilde;a y el confirmar deben ser iguales'
                    }
                }
            },
            confirmarContrasenha: {
                validators: {
                    notEmpty: {
                        message: 'La confirmaci&oacute;n no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 4,
                        message: 'La contrase&ntilde;a no puede tener menos de 4 caracteres'
                    },
                    identical: {
                        field: 'contrasenha',
                        message: 'La confirmaci&oacute;n y la contrase&ntilde;a deben ser iguales'
                    }
                }
            }
        }
    }).on('success.form.bv', function(e) {
        // Prevent form submission
        e.preventDefault();

        // Get the form instance
        var $form = $(e.target);

        // Get the BootstrapValidator instance
        var bv = $form.data('bootstrapValidator');

        actualizar();

    });

    //configuracion del formato
    $('#inputFechaNac').datepicker({
        format: "dd/mm/yyyy", // Notice the Extra space at the beginning
        viewMode: "years"
    });

    $('#inputActFechaNac').datepicker({
        viewMode: 'years',
        format: 'D/M/YYYY'
    });

    $("#inputPaises").change(function() {
        cargarCiudades($("#inputCiudades"), $(this).val());
    });

    $("#inputActPaises").change(function() {
        cargarCiudades($("#inputActCiudades"), $(this).val());
    });

    $(".selectpicker").selectpicker();
});

var hacerLlamada = false;
function agregar() {
    var objeto = new Object();
    objeto.numDoc = $("#inputNroDoc").val();
    objeto.nombres = $("#inputNombres").val();
    objeto.apellidos = $("#inputApellidos").val();
    objeto.fechaNacimiento = $("#inputFechaNac").val();
    objeto.direccionCasa = $("#inputDireccionCasa").val();
    objeto.direccionTrabajo = $("#inputDireccionTrabajo").val();
    objeto.telefono = $("#inputNroTelefono").val();
    objeto.celular = $("#inputNroCelular").val();
    objeto.correo = $("#inputEmail").val();
    objeto.peso = $("#inputPeso").val();
    objeto.grupoSanguineo = $("#inputGrupoSangre").val();
//    objeto.url_imagen = url_imagen;
    objeto.idGenero = $("#inputGeneros").val();
    objeto.idCiudad = $("#inputCiudades").val();
    objeto.contrasenha = $("#inputContrasenha").val();
    objeto.confirmarContrasenha = $("#inputConfirmarContrasenha").val();

    $.ajax({
        url: '/EmergenciasWAR/pacientes',
        dataType: 'json',
        type: 'POST',
        data: JSON.stringify(objeto),
        success: function(data) {
            console.log("Respuesta: " + data.estado);
            if (data.estado == "0") {
                bootbox.alert(data.mensaje);

                //hace que todos los campos del form se reseteen
                $("#agregarForm")[0].reset();
                //hace que los mensajes e iconos de validación desaparezcan.
                $("#agregarForm").data('bootstrapValidator').resetForm();

                hacerLlamada = true;
            } else {
                bootbox.alert(data.mensaje);
                //habilita de nuevo el boton de guardar
                $("#buttonGuardar").prop("disabled", false);
            }

        },
        error: function() {
            bootbox.alert("Datos no guardados. Intente de nuevo");
            //habilita de nuevo el boton de guardar
            $("#buttonGuardar").prop("disabled", false);
        }
    });
}

function actualizar() {
    var objeto = new Object();
    objeto.numDoc = $("#inputActNroDoc").val();
    objeto.nombres = $("#inputActNombres").val();
    objeto.apellidos = $("#inputActApellidos").val();
    objeto.fechaNacimiento = $("#inputActFechaNac").val();
    objeto.direccionCasa = $("#inputActDireccionCasa").val();
    objeto.direccionTrabajo = $("#inputActDireccionCasa").val();
    objeto.telefono = $("#inputActNroTelefono").val();
    objeto.celular = $("#inputActNroCelular").val();
    objeto.email = $("#inputActEmail").val();
    objeto.peso = $("#inputActPeso").val();
    objeto.grupoSanguineo = $("#inputActGrupoSangre").val();
    objeto.idGenero = $("#inputGeneros").val();
    objeto.idCiudad = $("#inputCiudades").val();
    //objeto.url_imagen = url_imagen;
    objeto.contrasenha = $("#inputActContrasenha").val();
    objeto.confirmarContrasenha = $("#inputActConfirmarContrasenha").val();

    $.ajax({
        url: '/EmergenciasWAR/pacientes',
        dataType: 'json',
        type: 'put',
        data: JSON.stringify(objeto),
        success: function(data) {

            if (data.estado == "0") {
                bootbox.alert(data.mensaje);

                //actualiza la tabla
                $('#assigned-vm-table').bootstrapTable("refresh", "/EmergenciasWAR/pacientes");

                //hace que todos los campos del form se reseteen
                $("#actualizarForm")[0].reset();
                //hace que los mensajes e iconos de validación desaparezcan.
                $("#actualizarForm").data('bootstrapValidator').resetForm();

                controlCheckBox();

                $('#myModal').modal('hide');
                $('#myModal').css("visibility", "hidden");
            } else {
                bootbox.alert(data.mensaje);
                //habilita de nuevo el boton de guardar
                $("#buttonActualizar").prop("disabled", false);
            }

        },
        error: function() {
            bootbox.alert("Datos no actualizados. Intente de nuevo");
            //habilita de nuevo el boton de guardar
            $("#buttonActualizar").prop("disabled", false);
        }
    });
}

function controlCheckBox() {
    if ($('#modContrasenha').is(':checked')) {
        $("#fieldsetModContrasenha").prop("disabled", false);
    } else {
        $("#actualizarForm").data('bootstrapValidator').resetForm();
        $("#buttonActualizar").prop("disabled", false);
        $("#fieldsetModContrasenha").prop("disabled", true);
        $("#inputActContrasenha").val("");
        $("#inputActConfirmarContrasenha").val("");
    }
}

function cargarGeneros(contexto) {

    $.ajax({
        url: '/EmergenciasWAR/generos',
        dataType: 'json',
        type: 'get',
        success: function(data) {
            if (data.estado == "0") {
                var html = '';
                $.each(data.datos, function(i, item) {

                    html += "<option value='" + item.idGenero + "'>" + item.descripcion + "</option>";
                });
                contexto.html(html);

                $('.selectpicker').selectpicker('refresh');

            } else {
                bootbox.alert(data.mensaje);
                //bootbox.alert("ERROR");
            }

        },
        error: function(a, b, c) {
            bootbox.alert("Ocurrio un error. Cargue de nuevo la pagina.");
        }

    });
}

function cargarCiudades(contexto, idPais) {

    $.ajax({
        url: '/EmergenciasWAR/paises/ciudades/' + idPais,
        dataType: 'json',
        type: 'get',
        success: function(data) {
            if (data.estado == "0") {
                var html = '';
                $.each(data.datos, function(i, item) {

                    html += "<option value='" + item.idCiudad + "'>" + item.descripcion + "</option>";
                });
                contexto.html(html);

                $('.selectpicker').selectpicker('refresh');
            } else {
                bootbox.alert(data.mensaje);
                //bootbox.alert("ERROR");
            }

        },
        error: function(a, b, c) {
            bootbox.alert("Ocurrio un error. Cargue de nuevo la pagina.");
        }

    });
}

function cargarPaises(contextoPais, contextoCiudades) {

    $.ajax({
        url: '/EmergenciasWAR/paises',
        dataType: 'json',
        type: 'get',
        success: function(data) {
            var idPais;
            if (data.estado == "0") {
                var html = '';
                idPais = data.datos[0].idPais;

                $.each(data.datos, function(i, item) {

                    html += "<option value='" + item.idPais + "'>" + item.descripcion + "</option>";
                });

                contextoPais.html(html);

                cargarCiudades(contextoCiudades, idPais);

                $('.selectpicker').selectpicker('refresh');
            } else {
                bootbox.alert(data.mensaje);
                //bootbox.alert("ERROR");
            }

        },
        error: function(a, b, c) {
            bootbox.alert("Ocurrio un error. Cargue de nuevo la pagina.");
        }

    });
}

function operateFormatter(value, row, index) {
    return [
        '<a class="edit ml10" href="javascript:void(0)" title="Editar">',
        '<i class="glyphicon glyphicon-edit"></i>',
        '</a>',
        '<a style="margin-left: 5px" class="remove ml10" href="javascript:void(0)" title="Eliminar">',
        '<i class="glyphicon glyphicon-remove"></i>',
        '</a>'
    ].join('');
}

window.operateEvents = {
    'click .edit': function(e, value, row, index) {
        //alert('You click edit icon, row: ' + JSON.stringify(row));
        editarFila(row);
    },
    'click .remove': function(e, value, row, index) {
        eliminarFila(row.idPaciente);
    }
};

function editarFila(row) {
    $("#inputActNroDoc").val(row.numDoc);
    $("#inputActNombres").val(row.nombres);
    $("#inputActApellidos").val(row.apellidos);
    $("#inputActFechaNac").val(row.fechaNacimiento);
    $("#inputActDireccionCasa").val(row.direccionCasa);
    $("#inputActNroTelefono").val(row.telefono);
    $("#inputActNroCelular").val(row.celular);
    $("#inputActEmail").val(row.correo);
    $("#inputActPeso").val(row.peso);
    $("#inputActGrupoSangre").val(row.grupoSanguineo);

    //setea el combo con el valor traido de la db
    $('#inputActGeneros option').prop('selected', false)
            .filter('[value="' + row.idGenero + '"]')
            .prop('selected', true);

    //setea el combo de estado con el valor traido de la db
    $('#inputActCiudades option').prop('selected', false)
            .filter('[value="' + row.idCiudad + '"]')
            .prop('selected', true);

    //manda por debajo el id para luego poder modificar en la db
    $("#inputActIdPaciente").val(row.idPersona);



    $("#inputActDes").val(row.descripcion);
    $("#inputActDireccion").val(row.direccion);
    $("#inputActTelefono").val(row.telefono);

    //manda por debajo el id para luego poder modificar en la db
    $("#inputActIdSucursal").val(row.idSucursal);

    $('#myModal').modal('show');
    $('#myModal').css("visibility", "visible");
}

function eliminarFila(id) {

    bootbox.confirm("Está seguro que desea eliminar el paciente?", function(result) {
        if (result) {
            var object = new Object();
            object.idSucursal = parseInt(id);
            $.ajax({
                url: '/EmergenciasWAR/pacientes/' + id,
                dataType: 'json',
                type: 'delete',
                success: function(data) {
                    if (data.estado == "0") {
                        bootbox.alert(data.mensaje);
                        //actualiza la tabla
                        $('#assigned-vm-table').bootstrapTable("refresh", "/EmergenciasWAR/pacientes    ");

                        //hace que todos los campos del form se reseteen
                        $("#actualizarForm")[0].reset();
                        //hace que los mensajes e iconos de validación desaparezcan.
                        $("#actualizarForm").data('bootstrapValidator').resetForm();

                        $('#myModal').modal('hide');
                        $('#myModal').css("visibility", "hidden");
                    } else {
                        bootbox.alert(data.mensaje);
                        //habilita de nuevo el boton de guardar
                        $("#buttonActualizar").prop("disabled", false);
                    }

                },
                error: function() {
                    bootbox.alert("Ocurrio un error. Intente de nuevo.");
                }

            });
        }
    });
}